package com.gxa.medical.controller;
import com.gxa.medical.common.ErrorCode;
import com.gxa.medical.common.R;
import com.gxa.medical.entity.dto.DrugQueryDto;
import com.gxa.medical.entity.pojo.Drug;
import com.gxa.medical.common.Result;
import com.gxa.medical.service.DrugService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@Controller//IOC注解
@ResponseBody//返回json数据
@RequestMapping("/drug")
@Api(tags = "药品相关接口")
public class DrugController {

    @Autowired
    private DrugService drugService;

    //定义请求路径 并且请求方式限制为get
    @ApiOperation("查询药品列表,总记录数")
    @PostMapping("/list")
    public Result list( @RequestBody DrugQueryDto drugQueryDto){

        //1.查询页面数据
        List<Drug> drugList = drugService.findDrugByWhere(drugQueryDto);

        //2.查询总记录数
        Long count = drugService.findDrugByWhereCount(drugQueryDto);

        //2.返回给前端
        return Result.buildSuccess(drugList,count);
    }

    @ApiOperation("根据id查询药品")
    @GetMapping("/find")
    public Result find(Long id){//springmvc会自动进行参数绑定

//        if(id==null){
//            return Result.buildFail(ErrorCode.FAILED_QUERY.getCode(), ErrorCode.FAILED_QUERY.getMsg());
//        }
        //调用service进行业务处理
        Drug drud = drugService.findDrugById(id);
        //返回结果给前端
        return Result.buildSuccess(drud);
    }

    @ApiOperation("增加药品")
    @PostMapping("/add")
    public Result add(@RequestBody Drug drug){//@RequestBody 前端给后端发送json数据
        System.out.println("从前端接收的信息："+drug);

        drugService.insertDrug(drug);
        return Result.buildSuccess();
    }

    @ApiOperation("更新药品")
    @PostMapping("/update")
    public Result update(@RequestBody Drug drug){//@RequestBody 前端给后端发送json数据
        drugService.updateDrug(drug);
        return Result.buildSuccess();
    }

    @ApiOperation("删除药品")
    @GetMapping("/delete")
    public Result delete(Long id){//springmvc会自动进行参数绑定
        //调用service进行业务处理
        drugService.deleteDrugById(id);
        //返回结果给前端
        return Result.buildSuccess();
    }

}
